package RecursiveSearcher;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName LC257
 * @Description  二叉树的所有路径
 * @Author ZJX
 * @Date 2024/9/16 20:26
 * @Version 1.0
 */
public class LC257 {
    public List<String> binaryTreePaths(TreeNode root) {
        List<String> paths = new ArrayList<>();

        // 如果根节点不为空，开始DFS遍历
        if (root != null) {
            dfs(root, "", paths);
        }
        
        return paths;
    }

    private void dfs(TreeNode root, String path, List<String> paths) {
        if (root == null){
            return ;
        }

//        到达了叶子结点 说明就是路径 加入到 paths
        if (root.left == null && root.right == null){
            paths.add(path + root.val);
            return ;
        }
        dfs(root.left, path + root.val + "->", paths);
        dfs(root.right,path + root.val + "->", paths);
    }
}
